package cn.edu.imut.hadoop;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author Kevin
 * @since 2025.03.13
 **/
public class ReadDataFromHDFS{
    public static void main(String[] args) throws IOException{
        // 构建Configuration对象，用于管理Hadoop中的配置信息
        Configuration conf = new Configuration();
        // 设置当前客户端程序要访问的默认的集群地址
        conf.set("fs.defaultFS","hdfs://192.168.111.2:9000");

        // 创建用于表示HDFS集群文件系统的对象
        FileSystem fs = FileSystem.get(conf);

        // 创建Path对象，用于封装要读取的文件的路径
        Path filePath = new Path("/passwd.txt");

        // 通过open方法，打开要读取的文件，得到一个输入流对象
        FSDataInputStream fsdis = fs.open(filePath);

        // 把读取的数据进行打印
        BufferedReader br = new BufferedReader(
            new InputStreamReader(fsdis));
        String  line;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }

        // 对数据操作完成之后，关闭流对象
        br.close();
        fsdis.close();
        fs.close();
    }
}
